1. Field of the Invention
The present invention relates to upgrading striped disk arrays for computer systems. Specifically, the present invention involves a method for increasing the capacity of a disk array without removing the system from normal operation.
2. Description of the Related Art
Modern computer technology is providing significant improvements in computing speed with faster processors and faster memory access times. However, because disk technology has not advanced commensurate with processor technology, the hard disk subsystem is often the main bottleneck in today's computer systems. Disk arrays, which consist of more than one disk configured as a single disk, provide a possible solution to increase hard disk system performance. A common method to decrease disk access time is to stripe the data across the disks in the array, as is well known in the art. See, e.g., Kim, Synchronized Disk Interleaving, IEEE Transactions on Computers, Vol. C-35, No. 11, pp. 978-988 (November 1986). One complication with disk arrays is that failure of one disk often causes a loss of a significant portion of data from many of the files on the array because a single file may span multiple disks in the array.
To overcome the reliability problem, many disk arrays employ one of the five logical disk geometries (LDGs) termed a "Redundant Array of Inexpensive Disks" (RAID) as proposed by researchers at the University of California at Berkeley. For instance, RAID 4 and RAID 5 are typical LDGs of arrays that are striped along boundaries of a selected size. In RAID 4 and RAID 5 arrays, each stripe of the selected size includes parity to provide redundancy. In RAID 4, one disk in the array is used for parity, and in RAID 5, the parity is distributed throughout the disks in the array rather than being placed on a single disk. The parity defined in RAID 4 and RAID 5 is the exclusive-OR of the data on corresponding striped blocks of the other disks in the hard disk subsystem, as is well known in the art. Redundant disk arrays improve reliability by enabling the reconstruction of lost data in the event one disk fails; however, they increase the complexity of the hard disk subsystem.
Increasing the capacity of a striped disk array is complex, and redundancy further complicates this process. For instance, in order to add a new disk to an existing striped array, the striping should incorporate the new disk. However, this generally entails reconfiguring the system. In one conventional method, all data in the existing array is first backed up. Commonly, disks used in disk arrays hold approximately one gigabyte of data each, and system backups are generally performed using magnetic tapes which hold significantly less data than the disk array. Therefore, the system backup requires copying data to multiple tape cartridges. A significant amount of operator time is required to monitor the backup and change the tape cartridges as they become full. Even without operator time, the entire process of transferring large amounts of data is time intensive. After the data is backed up, the new disk drive is installed. Subsequently, the system driver is configured to incorporate the space from the new disk into the array. Next, the new disk array is reformatted using the operating system's utilities. This configures the entire expanded array as one or more volumes with data striped across all the drives in the array. Finally, the data is transferred from the backup tape to the new array and, if employed, all redundancy (e.g., parity) is recalculated to incorporate the added storage. Generally, the hard disk system is removed from normal operation during the entire process. This is costly because the entire system is rendered inoperable during the upgrade.
An alternative procedure to upgrade such a disk array is to simply add a disk to the array and not incorporate it into the striping scheme. In other words, a new disk can simply be added as a new volume in and of itself. However, this is disadvantageous because the striping does not incorporate the new disk drive with the rest of the array. The new disk stands alone as an independent volume. Therefore, the performance increases gained by striping are minimized by the new volume which is not striped.
It would be advantageous to minimize or eliminate the CPU down time that is commonly required when a new disk is added to a striped disk array by current methods. It would be further advantageous to alleviate the necessity of backing up the old data before repositioning the old data onto the expanded disk array. Additionally, it would be beneficial for the added disk storage to be incorporated in the striping of the original disk array to take advantage of the increased performance of a striped disk array.